package com.cn.springcloudwechat.service.vaccine.vaccineService;

import java.util.List;
import java.util.Map;

import com.cn.springcloudwechat.common.mybatis.Page;
import com.cn.springcloudwechat.model.YmChildrenOrderVaccination;
import com.cn.springcloudwechat.model.YmUserChild;
import com.cn.springcloudwechat.model.vaccine.YmVaccine;
import com.cn.springcloudwechat.model.vaccine.YmVaccineType;
import com.cn.springcloudwechat.model.vaccine.YmVaccineTypeWithBLOBs;

public interface VaccineService {
	
	/**
	 * 疫苗类型的发布(疫苗的类型(详情))
	 * 
	 * @param YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,String[] parameter
	 *           
	 * @return SUCC
	 */
	public void insertVaccineTypeSer(YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,String[] parameter);
	
	/**
	 * 修改疫苗及关联疫苗(包括详情)
	 * 
	 * @param YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,String[] parameter
	 *           
	 * @return SUCC
	 */
	public void updateVaccineTypeSer(YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,String[] parameter);
	/**
	 * 疫苗的发布(疫苗的类型(详情),疫苗的关联参数)
	 * 
	 * @param YmVaccine ymVaccine,String[] parameter
	 *           
	 * @return SUCC
	 */
	public void insertVaccineSer(YmVaccine ymVaccine/*,String[] parameter*/);
	
	/**
	 * 疫苗类型的查询
	 * 
	 * @param YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs
	 *           
	 * @return List<YmVaccineTypeWithBLOBs>
	 */
//	public List<YmVaccineTypeWithBLOBs> queryVaccineTypeSer(YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,Page<Object> page);
	public Page<Object> queryVaccineTypeSer(YmVaccineTypeWithBLOBs ymVaccineTypeWithBLOBs,Page<Object> page);
	
	/**
	 * 疫苗周岁的详情查询
	 * 
	 * @param YmVaccine ymVaccine
	 *           
	 * @return List<YmVaccine>
	 */
//	public List<YmVaccine> queryVaccineSer(YmVaccine ymVaccine);
	public Page<Object> queryVaccineSer(YmVaccine ymVaccine,Page<Object> page);
	/**
	 * 疫苗关联查询(包括详情)
	 * 
	 * @param YmVaccine YmVaccine
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryVaccineRelevanceDetailSer(String[] vaccines);
	
	/**
	 * 疫苗关联查询(包括详情)*找到某个疫苗所有所有关联疫苗(管理端)
	 * 
	 * @param YmVaccine YmVaccine
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccineTypeWithBLOBs> queryVaccineRelevanceDetailPcSer(YmVaccine ymVaccine);
	
	/**
	 * 接种证查询(移动端)
	 * 
	 * @param age
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryVaccineInoculationPlanSer(String age,YmUserChild ymUserChild);
	
	/**
	 * 接种历史查询(移动端)
	 * 
	 * @param vaccineId,parentId
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryVaccineHistoryPlanSer(Long vaccineTypeId,Long parentId,Long childrenId);
	
	/**
	 * 新增历史疫苗(管理端)
	 * 
	 * @param YmChildrenOrderVaccination YmChildrenOrderVaccination
	 *           
	 * @return List<YmVaccine>
	 */
	public void insertYmChildrenOrderVaccinationSer(YmChildrenOrderVaccination YmChildrenOrderVaccination);
	
	/**
	 * 查询历史疫苗(移动端)
	 * 
	 * @param 
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryVaccineHistoryPlanAllSer(Long childrenId);
	
	/**
	 * 接种参考查询(移动端)
	 * 
	 * @param 
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryInoculationConsultSer();
	
	/**
	 * 根据年龄查询参考计划
	 * 
	 * @param String age
	 *           
	 * @return List<YmVaccine>
	 */
	public List<YmVaccine> queryVaccinePlanAgeSer(String age);

	/**
	 * 用户手动录入接种记录(根据疫苗ID,孩子ID查询所有未接种的剂次)
	 *
	 * @param vaccineTypeId
	 *
	 * @return
	 */
	public List<YmVaccine> queryAgentByVaccineTypeId(Long vaccineTypeId, Long childId);
	/**
	 * 用户手动录入接种记录
	 *
	 * @param  ymChildrenOrderVaccination
	 *
	 * @return
	 */
	public Integer insterYmChildrenOrderVaccinationByUserInfo(YmChildrenOrderVaccination ymChildrenOrderVaccination);

	/**
	 * 用户手动修改接种记录
	 *
	 * @param  ymChildrenOrderVaccination
	 *
	 * @return
	 */
	public Integer updateYmChildrenOrderVaccinationById(YmChildrenOrderVaccination ymChildrenOrderVaccination);

}
